const http = require('http');
const io = require('socket.io');

let httpserver = http.createServer((request, response) => {})

httpserver.listen(8080);

let wsserver = io.listen(httpserver);
let aSock = [];
wsserver.on('connection', sock => {
	aSock.push(sock);
	// disconnect事件在连接断开了会触发，这不是和前台协商的，这是socket.io封装的事件
	sock.on('disconnect', () => {
		// 如果不写这里，那断开的连接会留在aSock中
		let n = aSock.indexOf(sock);
		if (n != -1) {
			aSock.splice(n, 1);
		}
	})

	// 收到的数据是 str
	sock.on('msg', (str) => {
		// 将 str 分发数据到其他客户端
		aSock.forEach(s => {
			if (s != sock) {
				// 这里的 msg 也是自定义的，可以不和 on 的事件名相同和前台商议即可
				s.emit('msg', str);
			}
		})
	});
})